package com.yida.gwj.deposit.service;

import java.util.List;

import com.yida.gwj.api.domain.GwjFinanceAccountMain;
import com.yida.gwj.api.domain.request.RemoteGwjFinanceAccountDetailRequest;
import com.yida.gwj.api.domain.request.RemoteGwjFinanceAccountMainRequest;
import com.yida.gwj.deposit.domain.GwjDepositBusinessLog;
import com.yida.gwj.deposit.domain.dto.GwjDepositPageDTO;
import com.yida.gwj.deposit.domain.dto.GwjFinanceAccountDetailsDTO;
import com.yida.gwj.deposit.domain.dto.refund.GwjRefundCompleteCommunityDetailDTO;
import com.yida.gwj.deposit.domain.dto.refund.GwjRefundCompleteMoneyDTO;
import com.yida.gwj.deposit.domain.request.GwjDepositBusinessBuildRequest;
import com.yida.gwj.deposit.domain.request.refund.GwjRefundCompleteBusinessQueryRequest;
import com.yida.gwj.deposit.domain.request.refund.GwjRefundCompleteCommunityRequest;
import com.yida.gwj.deposit.domain.request.refund.GwjRefundCompleteDelBuildRequest;
import com.yida.gwj.deposit.domain.request.refund.GwjRefundCompleteDelHouseRequest;
import com.yida.gwj.deposit.domain.request.refund.GwjRefundCompleteImportBuildsRequest;
import com.yida.gwj.deposit.domain.request.refund.GwjRefundCompleteImportHousesRequest;
import com.yida.gwj.deposit.domain.request.refund.GwjRefundCompleteSaveSubmitRequest;

/**
 * @Author: PPV
 * @Date: 2023-02-13
 */

public interface IGwjRefundCompleteBusinessService {

    /**
     * 获取缴费信息
     *
     * @param bizId
     * @return
     */
    GwjRefundCompleteMoneyDTO getMoneyInfo(Long bizId);

    /**
     * 获取小区信息
     *
     * @param bizId
     * @return
     */
    GwjRefundCompleteCommunityDetailDTO getCommunityInfo(Long bizId);

    /**
     * 导入小区
     *
     * @param gwjDepositBusinessCommunity
     */
    void importCommunity(GwjRefundCompleteCommunityRequest request);

    /**
     * 删除楼栋
     *
     * @param delBuildRequest
     */
    void delBuild(GwjRefundCompleteDelBuildRequest delBuildRequest);

    /**
     * 保存
     *
     * @param saveSubmitRequest
     * @return
     */
    Long saveBusiness(GwjRefundCompleteSaveSubmitRequest saveSubmitRequest);

    /**
     * 二次保存
     *
     * @param saveSubmitRequest
     */
    void updateBusiness(GwjRefundCompleteSaveSubmitRequest saveSubmitRequest);

    /**
     * 提交
     *
     * @param saveSubmitRequest
     */
    void submitBusiness(GwjRefundCompleteSaveSubmitRequest saveSubmitRequest);

    /**
     * 删页
     *
     * @param bizId
     */
    void deleteBusinessData(Long bizId);

    /**
     * 生成财务流水
     *
     * @param bizId
     */
    void genFinancialStatement(Long bizId);

    /**
     * 财务对账
     *
     * @param bizId
     */
    void financeCheck(Long bizId);

    /**
     * 删除缴费明细
     *
     * @param bizId
     * @param depositDetailId
     */
    void delMoneyDetail(Long bizId, Long depositDetailId);

    /**
     * 删除房屋
     *
     * @param delHouseRequest
     */
    void delHouse(GwjRefundCompleteDelHouseRequest delHouseRequest);

    /**
     * 业务列表分页
     *
     * @param request
     * @return
     */
    List<GwjDepositPageDTO> getPage(GwjRefundCompleteBusinessQueryRequest request);

    /**
     * 首页提交
     *
     * @param businessLog
     */
    void indexSubmit(GwjDepositBusinessLog businessLog);

    /**
     * 导入楼栋
     *
     * @param request
     */
    void importBuilds(GwjRefundCompleteImportBuildsRequest request);

    /**
     * 导入房屋
     *
     * @param request
     */
    void importHouses(GwjRefundCompleteImportHousesRequest request);

    List<GwjFinanceAccountMain> selectGwjFinanceAccountMainList(RemoteGwjFinanceAccountMainRequest mainRequest);

    List<GwjFinanceAccountDetailsDTO> selectGwjFinanceAccountDetailList(RemoteGwjFinanceAccountDetailRequest detailRequest);

    void fallback(GwjDepositBusinessLog businessLog);

    /**
     * 修改楼栋信息
     * 
     * @param gdbbr
     */
    void updateBuildInfo(GwjDepositBusinessBuildRequest gdbbr);
}
